//package com.ruoyi.common.utils.pdf;
//
//import com.itextpdf.text.*;
//import com.itextpdf.text.pdf.BaseFont;
//import com.itextpdf.text.pdf.PdfWriter;
//import com.ruoyi.common.annotation.Excel;
//import com.ruoyi.common.core.text.Convert;
//import com.ruoyi.common.utils.StringUtils;
//import org.apache.commons.lang3.reflect.FieldUtils;
//
//import java.lang.reflect.Field;
//import java.net.URL;
//import java.nio.file.Files;
//import java.nio.file.Paths;
//import java.util.ArrayList;
//import java.util.List;
//
//public class PdfExporter<T> {
//
//    public void exportListToPdf(List<T> listItems, String outputPdfPath) {
//        Document document = new Document();
//        try {
//            PdfWriter.getInstance(document, Files.newOutputStream(Paths.get(outputPdfPath)));
//            BaseFont baseFont = BaseFont.createFont("simsun.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
//            Font font = new Font(baseFont, 15, Font.BOLD);
//
//            document.open();
//
//            for (T obj : listItems) {
//                List<Field> subFields = FieldUtils.getFieldsListWithAnnotation(obj.getClass(), Excel.class);
//                for (Field subField : subFields) {
//                    subField.setAccessible(true);
//                    Excel attr = subField.getAnnotation(Excel.class);
//                    Object value = getTargetValue(obj, subField, attr);
//                    if (attr.cellType() == Excel.ColumnType.IMAGE) {
//                        // 添加文本
//                        Paragraph paragraph = new Paragraph(attr.name() + ":", font);
//                        document.add(paragraph);
//                        // 添加图片
//                        Image image = Image.getInstance(new URL(Convert.toStr(value)));
//                        image.scalePercent(50);
//                        document.add(image);
//                    } else {
//                        // 添加文本
//                        Paragraph paragraph = new Paragraph(attr.name() + ":" + Convert.toStr(value), font);
//                        document.add(paragraph);
//                    }
//                }
//
//                // 可选：添加一些空间以分隔条目
//                document.add(Chunk.NEWLINE);
//            }
//
//            document.close();
//            System.out.println("PDF created successfully!");
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    public Object getTargetValue(T vo, Field field, Excel excel) throws Exception {
//        Object o = field.get(vo);
//        if (StringUtils.isNotEmpty(excel.targetAttr())) {
//            String target = excel.targetAttr();
//            if (target.contains(".")) {
//                String[] targets = target.split("[.]");
//                for (String name : targets) {
//                    o = getValue(o, name);
//                }
//            } else {
//                o = getValue(o, target);
//            }
//        }
//        return o;
//    }
//
//    public Object getValue(Object o, String name) throws Exception {
//        if (StringUtils.isNotNull(o) && StringUtils.isNotEmpty(name)) {
//            Class<?> clazz = o.getClass();
//            Field field = clazz.getDeclaredField(name);
//            field.setAccessible(true);
//            o = field.get(o);
//        }
//        return o;
//    }
////
////    public static void main(String[] args) {
////
////
////        ListItem item1 = new ListItem("xxx", "wwwwwwwwwwwwwwwwwwwwwwwwww", "http://53796ba3.cpolar.top/profile/upload/2024/08/17/微信图片_20220627134902_20240817180950A001.jpg");
////        ListItem item2 = new ListItem("xxx", "wwwwwwwwwwwwwwwwwwwwwwwwww", "http://53796ba3.cpolar.top/profile/upload/2024/08/17/微信图片_20220627134902_20240817180950A001.jpg");
////
////        List<ListItem> listItems = new ArrayList<>();
////        listItems.add(item1);
////        listItems.add(item2);
////
////        PdfExporter<ListItem> pdfExporter = new PdfExporter<>();
////        pdfExporter.exportListToPdf(listItems, "D:/ruoyi/uploadPath/pdf/output.pdf");
//////
//////        // 导出PDF
//////        exportListToPdf(listItems, "D:/ruoyi/uploadPath/pdf/output.pdf");
////    }
//
//}
